#ifndef GUARD_CONSTANTS_EVENT_OBJECTS_H
#define GUARD_CONSTANTS_EVENT_OBJECTS_H

#include "constants/map_event_ids.h"

#define OBJ_EVENT_GFX_BRENDAN_NORMAL 0
#define OBJ_EVENT_GFX_BRENDAN_MACH_BIKE 1
#define OBJ_EVENT_GFX_BRENDAN_SURFING 2
#define OBJ_EVENT_GFX_BRENDAN_FIELD_MOVE 3
#define OBJ_EVENT_GFX_QUINTY_PLUMP 4
#define OBJ_EVENT_GFX_LITTLE_BOY_1 5
#define OBJ_EVENT_GFX_LITTLE_GIRL_1 6
#define OBJ_EVENT_GFX_BOY_1 7
#define OBJ_EVENT_GFX_GIRL_1 8
#define OBJ_EVENT_GFX_BOY_2 9
#define OBJ_EVENT_GFX_GIRL_2 10
#define OBJ_EVENT_GFX_LITTLE_BOY_2 11
#define OBJ_EVENT_GFX_LITTLE_GIRL_2 12
#define OBJ_EVENT_GFX_BOY_3 13
#define OBJ_EVENT_GFX_GIRL_3 14
#define OBJ_EVENT_GFX_BOY_4 15
#define OBJ_EVENT_GFX_WOMAN_1 16
#define OBJ_EVENT_GFX_FAT_MAN 17
#define OBJ_EVENT_GFX_WOMAN_2 18
#define OBJ_EVENT_GFX_MAN_1 19
#define OBJ_EVENT_GFX_WOMAN_3 20
#define OBJ_EVENT_GFX_OLD_MAN_1 21
#define OBJ_EVENT_GFX_OLD_WOMAN_1 22
#define OBJ_EVENT_GFX_MAN_2 23
#define OBJ_EVENT_GFX_WOMAN_4 24
#define OBJ_EVENT_GFX_MAN_3 25
#define OBJ_EVENT_GFX_WOMAN_5 26
#define OBJ_EVENT_GFX_COOK 27
#define OBJ_EVENT_GFX_WOMAN_6 28
#define OBJ_EVENT_GFX_OLD_MAN_2 29
#define OBJ_EVENT_GFX_OLD_WOMAN_2 30
#define OBJ_EVENT_GFX_CAMPER 31
#define OBJ_EVENT_GFX_PICNICKER 32
#define OBJ_EVENT_GFX_MAN_4 33
#define OBJ_EVENT_GFX_WOMAN_7 34
#define OBJ_EVENT_GFX_YOUNGSTER 35
#define OBJ_EVENT_GFX_BUG_CATCHER 36
#define OBJ_EVENT_GFX_PSYCHIC_M 37
#define OBJ_EVENT_GFX_SCHOOL_KID_M 38
#define OBJ_EVENT_GFX_MANIAC 39
#define OBJ_EVENT_GFX_HEX_MANIAC 40
#define OBJ_EVENT_GFX_WOMAN_8 41
#define OBJ_EVENT_GFX_SWIMMER_M 42
#define OBJ_EVENT_GFX_SWIMMER_F 43
#define OBJ_EVENT_GFX_BLACK_BELT 44
#define OBJ_EVENT_GFX_BEAUTY 45
#define OBJ_EVENT_GFX_SCIENTIST_1 46
#define OBJ_EVENT_GFX_LASS 47
#define OBJ_EVENT_GFX_GENTLEMAN 48
#define OBJ_EVENT_GFX_SAILOR 49
#define OBJ_EVENT_GFX_FISHERMAN 50
#define OBJ_EVENT_GFX_RUNNING_TRIATHLETE_M 51
#define OBJ_EVENT_GFX_RUNNING_TRIATHLETE_F 52
#define OBJ_EVENT_GFX_TUBER_F 53
#define OBJ_EVENT_GFX_TUBER_M 54
#define OBJ_EVENT_GFX_HIKER 55
#define OBJ_EVENT_GFX_CYCLING_TRIATHLETE_M 56
#define OBJ_EVENT_GFX_CYCLING_TRIATHLETE_F 57
#define OBJ_EVENT_GFX_NURSE 58
#define OBJ_EVENT_GFX_ITEM_BALL 59
#define OBJ_EVENT_GFX_BERRY_TREE 60
#define OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES 61
#define OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES 62
#define OBJ_EVENT_GFX_BRENDAN_ACRO_BIKE 63
#define OBJ_EVENT_GFX_PROF_BIRCH 64
#define OBJ_EVENT_GFX_MAN_5 65
#define OBJ_EVENT_GFX_MAN_6 66
#define OBJ_EVENT_GFX_REPORTER_M 67
#define OBJ_EVENT_GFX_REPORTER_F 68
#define OBJ_EVENT_GFX_BARD 69
#define OBJ_EVENT_GFX_HIPSTER 70
#define OBJ_EVENT_GFX_TRADER 71
#define OBJ_EVENT_GFX_STORYTELLER 72
#define OBJ_EVENT_GFX_GIDDY 73
#define OBJ_EVENT_GFX_UNUSED_MAUVILLE_OLD_MAN_1 74
#define OBJ_EVENT_GFX_UNUSED_MAUVILLE_OLD_MAN_2 75
#define OBJ_EVENT_GFX_UNUSED_NATU_DOLL 76
#define OBJ_EVENT_GFX_UNUSED_MAGNEMITE_DOLL 77
#define OBJ_EVENT_GFX_UNUSED_SQUIRTLE_DOLL 78
#define OBJ_EVENT_GFX_UNUSED_WOOPER_DOLL 79
#define OBJ_EVENT_GFX_UNUSED_PIKACHU_DOLL 80
#define OBJ_EVENT_GFX_UNUSED_PORYGON2_DOLL 81
#define OBJ_EVENT_GFX_CUTTABLE_TREE 82
#define OBJ_EVENT_GFX_MART_EMPLOYEE 83
#define OBJ_EVENT_GFX_ROOFTOP_SALE_WOMAN 84
#define OBJ_EVENT_GFX_TEALA 85
#define OBJ_EVENT_GFX_BREAKABLE_ROCK 86
#define OBJ_EVENT_GFX_PUSHABLE_BOULDER 87
#define OBJ_EVENT_GFX_MR_BRINEYS_BOAT 88
#define OBJ_EVENT_GFX_MAY_NORMAL 89
#define OBJ_EVENT_GFX_MAY_MACH_BIKE 90
#define OBJ_EVENT_GFX_MAY_ACRO_BIKE 91
#define OBJ_EVENT_GFX_MAY_SURFING 92
#define OBJ_EVENT_GFX_MAY_FIELD_MOVE 93
#define OBJ_EVENT_GFX_TRUCK 94
#define OBJ_EVENT_GFX_MACHOKE_CARRYING_BOX 95
#define OBJ_EVENT_GFX_MACHOKE_FACING_AWAY 96
#define OBJ_EVENT_GFX_BIRCHS_BAG 97
#define OBJ_EVENT_GFX_POOCHYENA 98
#define OBJ_EVENT_GFX_ARTIST 99
#define OBJ_EVENT_GFX_RIVAL_BRENDAN_NORMAL 100
#define OBJ_EVENT_GFX_RIVAL_BRENDAN_MACH_BIKE 101
#define OBJ_EVENT_GFX_RIVAL_BRENDAN_ACRO_BIKE 102
#define OBJ_EVENT_GFX_RIVAL_BRENDAN_SURFING 103
#define OBJ_EVENT_GFX_RIVAL_BRENDAN_FIELD_MOVE 104
#define OBJ_EVENT_GFX_RIVAL_MAY_NORMAL 105
#define OBJ_EVENT_GFX_RIVAL_MAY_MACH_BIKE 106
#define OBJ_EVENT_GFX_RIVAL_MAY_ACRO_BIKE 107
#define OBJ_EVENT_GFX_RIVAL_MAY_SURFING 108
#define OBJ_EVENT_GFX_RIVAL_MAY_FIELD_MOVE 109
#define OBJ_EVENT_GFX_CAMERAMAN 110
#define OBJ_EVENT_GFX_BRENDAN_UNDERWATER 111
#define OBJ_EVENT_GFX_MAY_UNDERWATER 112
#define OBJ_EVENT_GFX_MOVING_BOX 113
#define OBJ_EVENT_GFX_CABLE_CAR 114
#define OBJ_EVENT_GFX_SCIENTIST_2 115
#define OBJ_EVENT_GFX_MAN_7 116
#define OBJ_EVENT_GFX_AQUA_MEMBER_M 117
#define OBJ_EVENT_GFX_AQUA_MEMBER_F 118
#define OBJ_EVENT_GFX_MAGMA_MEMBER_M 119
#define OBJ_EVENT_GFX_MAGMA_MEMBER_F 120
#define OBJ_EVENT_GFX_SIDNEY 121
#define OBJ_EVENT_GFX_PHOEBE 122
#define OBJ_EVENT_GFX_GLACIA 123
#define OBJ_EVENT_GFX_DRAKE 124
#define OBJ_EVENT_GFX_ROXANNE 125
#define OBJ_EVENT_GFX_BRAWLY 126
#define OBJ_EVENT_GFX_WATTSON 127
#define OBJ_EVENT_GFX_FLANNERY 128
#define OBJ_EVENT_GFX_NORMAN 129
#define OBJ_EVENT_GFX_WINONA 130
#define OBJ_EVENT_GFX_LIZA 131
#define OBJ_EVENT_GFX_TATE 132
#define OBJ_EVENT_GFX_WALLACE 133
#define OBJ_EVENT_GFX_STEVEN 134
#define OBJ_EVENT_GFX_WALLY 135
#define OBJ_EVENT_GFX_LITTLE_BOY_3 136
#define OBJ_EVENT_GFX_BRENDAN_FISHING 137
#define OBJ_EVENT_GFX_MAY_FISHING 138
#define OBJ_EVENT_GFX_HOT_SPRINGS_OLD_WOMAN 139
#define OBJ_EVENT_GFX_SS_TIDAL 140
#define OBJ_EVENT_GFX_SUBMARINE_SHADOW 141
#define OBJ_EVENT_GFX_PICHU_DOLL 142
#define OBJ_EVENT_GFX_PIKACHU_DOLL 143
#define OBJ_EVENT_GFX_MARILL_DOLL 144
#define OBJ_EVENT_GFX_TOGEPI_DOLL 145
#define OBJ_EVENT_GFX_CYNDAQUIL_DOLL 146
#define OBJ_EVENT_GFX_CHIKORITA_DOLL 147
#define OBJ_EVENT_GFX_TOTODILE_DOLL 148
#define OBJ_EVENT_GFX_JIGGLYPUFF_DOLL 149
#define OBJ_EVENT_GFX_MEOWTH_DOLL 150
#define OBJ_EVENT_GFX_CLEFAIRY_DOLL 151
#define OBJ_EVENT_GFX_DITTO_DOLL 152
#define OBJ_EVENT_GFX_SMOOCHUM_DOLL 153
#define OBJ_EVENT_GFX_TREECKO_DOLL 154
#define OBJ_EVENT_GFX_TORCHIC_DOLL 155
#define OBJ_EVENT_GFX_MUDKIP_DOLL 156
#define OBJ_EVENT_GFX_DUSKULL_DOLL 157
#define OBJ_EVENT_GFX_WYNAUT_DOLL 158
#define OBJ_EVENT_GFX_BALTOY_DOLL 159
#define OBJ_EVENT_GFX_KECLEON_DOLL 160
#define OBJ_EVENT_GFX_AZURILL_DOLL 161
#define OBJ_EVENT_GFX_SKITTY_DOLL 162
#define OBJ_EVENT_GFX_SWABLU_DOLL 163
#define OBJ_EVENT_GFX_GULPIN_DOLL 164
#define OBJ_EVENT_GFX_LOTAD_DOLL 165
#define OBJ_EVENT_GFX_SEEDOT_DOLL 166
#define OBJ_EVENT_GFX_PIKA_CUSHION 167
#define OBJ_EVENT_GFX_ROUND_CUSHION 168
#define OBJ_EVENT_GFX_KISS_CUSHION 169
#define OBJ_EVENT_GFX_ZIGZAG_CUSHION 170
#define OBJ_EVENT_GFX_SPIN_CUSHION 171
#define OBJ_EVENT_GFX_DIAMOND_CUSHION 172
#define OBJ_EVENT_GFX_BALL_CUSHION 173
#define OBJ_EVENT_GFX_GRASS_CUSHION 174
#define OBJ_EVENT_GFX_FIRE_CUSHION 175
#define OBJ_EVENT_GFX_WATER_CUSHION 176
#define OBJ_EVENT_GFX_BIG_SNORLAX_DOLL 177
#define OBJ_EVENT_GFX_BIG_RHYDON_DOLL 178
#define OBJ_EVENT_GFX_BIG_LAPRAS_DOLL 179
#define OBJ_EVENT_GFX_BIG_VENUSAUR_DOLL 180
#define OBJ_EVENT_GFX_BIG_CHARIZARD_DOLL 181
#define OBJ_EVENT_GFX_BIG_BLASTOISE_DOLL 182
#define OBJ_EVENT_GFX_BIG_WAILMER_DOLL 183
#define OBJ_EVENT_GFX_BIG_REGIROCK_DOLL 184
#define OBJ_EVENT_GFX_BIG_REGICE_DOLL 185
#define OBJ_EVENT_GFX_BIG_REGISTEEL_DOLL 186
#define OBJ_EVENT_GFX_LATIAS 187
#define OBJ_EVENT_GFX_LATIOS 188
#define OBJ_EVENT_GFX_BOY_5 189
#define OBJ_EVENT_GFX_CONTEST_JUDGE 190
#define OBJ_EVENT_GFX_BRENDAN_WATERING 191
#define OBJ_EVENT_GFX_MAY_WATERING 192
#define OBJ_EVENT_GFX_BRENDAN_DECORATING 193
#define OBJ_EVENT_GFX_MAY_DECORATING 194
#define OBJ_EVENT_GFX_ARCHIE 195
#define OBJ_EVENT_GFX_MAXIE 196
#define OBJ_EVENT_GFX_KYOGRE_1 197
#define OBJ_EVENT_GFX_GROUDON_1 198
#define OBJ_EVENT_GFX_FOSSIL 199
#define OBJ_EVENT_GFX_REGIROCK 200
#define OBJ_EVENT_GFX_REGICE 201
#define OBJ_EVENT_GFX_REGISTEEL 202
#define OBJ_EVENT_GFX_SKITTY 203
#define OBJ_EVENT_GFX_KECLEON_1 204
#define OBJ_EVENT_GFX_KYOGRE_2 205
#define OBJ_EVENT_GFX_GROUDON_2 206
#define OBJ_EVENT_GFX_RAYQUAZA 207
#define OBJ_EVENT_GFX_ZIGZAGOON 208
#define OBJ_EVENT_GFX_PIKACHU 209
#define OBJ_EVENT_GFX_AZUMARILL 210
#define OBJ_EVENT_GFX_WINGULL 211
#define OBJ_EVENT_GFX_KECLEON_2 212
#define OBJ_EVENT_GFX_TUBER_M_SWIMMING 213
#define OBJ_EVENT_GFX_AZURILL 214
#define OBJ_EVENT_GFX_MOM 215
#define OBJ_EVENT_GFX_LINK_BRENDAN 216
#define OBJ_EVENT_GFX_LINK_MAY 217

#define NUM_OBJ_EVENT_GFX      218

// These are dynamic object gfx ids.
// They correspond with the values of the VAR_OBJ_GFX_ID_X vars.
// More info about them in include/constants/vars.h
#define OBJ_EVENT_GFX_VARS   240
#define OBJ_EVENT_GFX_VAR_0  (OBJ_EVENT_GFX_VARS + 0x0)
#define OBJ_EVENT_GFX_VAR_1  (OBJ_EVENT_GFX_VARS + 0x1)
#define OBJ_EVENT_GFX_VAR_2  (OBJ_EVENT_GFX_VARS + 0x2)
#define OBJ_EVENT_GFX_VAR_3  (OBJ_EVENT_GFX_VARS + 0x3)
#define OBJ_EVENT_GFX_VAR_4  (OBJ_EVENT_GFX_VARS + 0x4)
#define OBJ_EVENT_GFX_VAR_5  (OBJ_EVENT_GFX_VARS + 0x5)
#define OBJ_EVENT_GFX_VAR_6  (OBJ_EVENT_GFX_VARS + 0x6)
#define OBJ_EVENT_GFX_VAR_7  (OBJ_EVENT_GFX_VARS + 0x7)
#define OBJ_EVENT_GFX_VAR_8  (OBJ_EVENT_GFX_VARS + 0x8)
#define OBJ_EVENT_GFX_VAR_9  (OBJ_EVENT_GFX_VARS + 0x9)
#define OBJ_EVENT_GFX_VAR_A  (OBJ_EVENT_GFX_VARS + 0xA)
#define OBJ_EVENT_GFX_VAR_B  (OBJ_EVENT_GFX_VARS + 0xB)
#define OBJ_EVENT_GFX_VAR_C  (OBJ_EVENT_GFX_VARS + 0xC)
#define OBJ_EVENT_GFX_VAR_D  (OBJ_EVENT_GFX_VARS + 0xD)
#define OBJ_EVENT_GFX_VAR_E  (OBJ_EVENT_GFX_VARS + 0xE)
#define OBJ_EVENT_GFX_VAR_F  (OBJ_EVENT_GFX_VARS + 0xF) // 255

#define SHADOW_SIZE_S 0
#define SHADOW_SIZE_M 1
#define SHADOW_SIZE_L 2
#define SHADOW_SIZE_XL 3

#define TRACKS_NONE 0
#define TRACKS_FOOT 1
#define TRACKS_BIKE_TIRE 2

#define OBJ_KIND_NORMAL 0
#define OBJ_KIND_CLONE  255 // Exclusive to FRLG

// Each object event template gets an ID that can be used to refer to it in scripts and elsewhere.
// This is referred to as the "local id" (and it's really just 1 + its index in the templates array).
// There are a few special IDs reserved for objects that don't have templates in the map data -- one for the player
// in regular offline play, five for linked players while playing Berry Blender, and one for an invisible object that
// can be spawned for the camera to track instead of the player. Additionally, the value 0 is reserved as an "empty" indicator.
#define LOCALID_NONE                         0
#define LOCALID_CAMERA                     127
#define LOCALID_PLAYER                     255

#endif  // GUARD_CONSTANTS_EVENT_OBJECTS_H
